package com.anquing.socket04;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * @author Administrator
 *Datagram服务器端
 */
public class UDPServer {


	public static void main(String[] args) {

		try {
			/*
			 * 服务器端接收客户端数据
			 */
			// 1、创建服务器端DatagramSocket,指定相应的端口号
			DatagramSocket datagramSocket = new DatagramSocket(7777);
			//2、创建数据报DatagramPacket,用于接收客户端发送的数据
			byte[] data=new byte[1024];
			DatagramPacket datagramPacket = new DatagramPacket(data, data.length);
			//3、接收客户端发送的数据
			System.out.println("********服务器端已经启动*******");
			datagramSocket.receive(datagramPacket);//此方法在接收到数据报之前会一直阻塞
			//4、读取数据
			String info = new String(data, 0,datagramPacket.getLength());
			System.out.println("我是服务器，客户端说："+info);
			/*
			 * 服务器向客户端响应
			 */
			// 1、获取客户端的地址、端口号、定义响应数据
			InetAddress address = datagramPacket.getAddress();
			int port = datagramPacket.getPort();
			byte[] data2 = "欢迎您！".getBytes();
			//2、创建数据报，包含发送的数据信息
			DatagramPacket datagramPacket2 = new DatagramPacket(data2, data2.length, address, port);
			//3、响应客户端，发送数据
			datagramSocket.send(datagramPacket2);
			//4、关闭资源
			datagramSocket.close();
		}catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

